<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
</head>
<body>
    <script >
       /**
        * class 类
        * 
        * ES6 提供了更接近传统语言的写法，引入了class 类的 概念，作为
        * 对象的模板。通过class 关键字，可以定义类。基本上，ES6的class 可以
        * 看做是一个语法糖，它的大部分功能，ES5都可以做到。新的class写法只是让对象
        * 的写法更加清晰、更像面向对象编程的语法而已
        * 
        * - class 声明类
        * - constructor 定义构造函数初始化
        * - extends 继承父类
        * - super 调用 父级构造方法
        * - static 定义静态方法和属性
        * 父类方法可以重写
       */


       // es6
       
       function Phone(brand,price){
           this.brand = brand;
           this.price = price;
       }

       // 静态方法与成员
       Phone.name = "123";
       Phone.age = 123;
       // 这些属性属于函数对象，而不是属于实例对象

    Phone.prototype.call = function(){

    }

        let huawei = new Phone('huawei',999);

    /*
    es6
    */

    class Phone{

        // 名字固定，使用new 关键字创建
        constructor(brand,price){
            this.brand = brand;
           this.price = price;
        }

        static name = "123";
        static cs(){
            
        }

        /**
         * 
         * 方法必须使用该语法，不能使用ES5 的对象完整形式
         * 
         *  function (){} 不允许
         * */
        call(){

        }

    }
    let p = new Phone('1',999);

    </script>

</body>

</html>